Mnoho polozek v TListView

Otázka od: Jiri Cincura

11. 8. 2004 11:42

Ahoj,
  potrebuji nacitat do TListView kolem 40 tisic polozek ze souboru. Zaznamy
jsou oddleny TAB. Nactu to do StringListu a z nej po radcich davam do
sloupcu v ListView (vsReport styl). To samozrejme trva strasne dlouho. Nevi
nekdo, jak tento proces urychlit. Nejakou doprednou alokaci (nebot Destroy
ListView trva take dlouho). Snazim se o co nejmensi "prehazovani" pismen ve
StringListu. Delam pouze Delete a LeftStr, ktery davam do sloupcu. Zkousel
jsem i Delete vypustit a jit na to pres MidStr, ale vysledek byl jeste
horsi.

Jak teda nacitani citelne zrychlit. Pripadne nejaky lepsi zpusob, do ceho to
ukladat. Uvazoval jsem i pole recordu (a nezobrazoval bych to).

Nejake napady sem.

btw dale ten seznam prochazim sekvencne a porovnavam kazdy s kazdym coz take
trva dlouho, vi nekdo, jak to urychlit (nemuzu s tim nic delat tridit atp.
:[)?

--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net



Odpovedá: Martin Cajbik

11. 8. 2004 12:43

Zdravim,
najlepsie by bolo v tomto pripade pouzit virtualny mod ListView.

Martin Cajbik

Jiri Cincura wrote:
> Ahoj,
> potrebuji nacitat do TListView kolem 40 tisic polozek ze souboru. Zaznamy
> jsou oddleny TAB. Nactu to do StringListu a z nej po radcich davam do
> sloupcu v ListView (vsReport styl). To samozrejme trva strasne dlouho. Nevi
> nekdo, jak tento proces urychlit. Nejakou doprednou alokaci (nebot Destroy
> ListView trva take dlouho). Snazim se o co nejmensi "prehazovani" pismen ve
> StringListu. Delam pouze Delete a LeftStr, ktery davam do sloupcu. Zkousel
> jsem i Delete vypustit a jit na to pres MidStr, ale vysledek byl jeste
> horsi.
>
> Jak teda nacitani citelne zrychlit. Pripadne nejaky lepsi zpusob, do ceho to
> ukladat. Uvazoval jsem i pole recordu (a nezobrazoval bych to).
>
> Nejake napady sem.
>
> btw dale ten seznam prochazim sekvencne a porovnavam kazdy s kazdym coz take
> trva dlouho, vi nekdo, jak to urychlit (nemuzu s tim nic delat tridit atp.
> :[)?
>
> --
> Jiri Cincura


Odpovedá: Andreas Bednarek

11. 8. 2004 12:55

> potrebuji nacitat do TListView kolem 40 tisic polozek ze souboru.
Zaznamy
> jsou oddleny TAB. Nactu to do StringListu a z nej po radcich davam do
> sloupcu v ListView (vsReport styl). To samozrejme trva strasne dlouho.

Klasika, pouzij LV ve virtualnim rezimu. Tzn. OwnerData := True a v udalosti
OnData mu teprv predavej data k zobrazeni takto:

Item.Caption := "1. sloupec";
Item.SubItems.Add("2. sloupec");
...
atd.

Nejdriv take musis zadat pocet polozek LV (Items.Count..?).

Data si musis ulozit ve vlastnim formatu (pokud nebudes cist primo ze
StringListu) a pokud pro to pouzijes napr. tridu TList, muzes pak pekne
pouzit jeji metodu Sort pro razeni.


Odpovedá: Bronislav Klucka

11. 8. 2004 16:32

Ahoj
Doporucuji TVirtualTreeView (vygoogli si ho)


Brona

> Ahoj,
> potrebuji nacitat do TListView kolem 40 tisic polozek ze
> souboru. Zaznamy
> jsou oddleny TAB. Nactu to do StringListu a z nej po radcich davam do
> sloupcu v ListView (vsReport styl). To samozrejme trva strasne
> dlouho. Nevi
> nekdo, jak tento proces urychlit. Nejakou doprednou alokaci (nebot Destroy
> ListView trva take dlouho). Snazim se o co nejmensi "prehazovani"
> pismen ve
> StringListu. Delam pouze Delete a LeftStr, ktery davam do sloupcu. Zkousel
> jsem i Delete vypustit a jit na to pres MidStr, ale vysledek byl jeste
> horsi.
>
> Jak teda nacitani citelne zrychlit. Pripadne nejaky lepsi zpusob,
> do ceho to
> ukladat. Uvazoval jsem i pole recordu (a nezobrazoval bych to).
>
> Nejake napady sem.
>
> btw dale ten seznam prochazim sekvencne a porovnavam kazdy s
> kazdym coz take
> trva dlouho, vi nekdo, jak to urychlit (nemuzu s tim nic delat tridit atp.
> :[)?
>
> --
> Jiri Cincura
> e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
> ICQ: 314711544
> web: http://www.cincura.net; http://photo.cincura.net
>
>
>
>
>


Odpovedá: Jiri Cincura

11. 8. 2004 18:00

Andreas Bednarek wrote:
>
> Klasika, pouzij LV ve virtualnim rezimu. Tzn. OwnerData := True a v
> udalosti OnData mu teprv predavej data k zobrazeni takto:

Ha, a ja to znal jen u TreeView.
Podivam se na to.

--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net